const { apiUrl } = require("../../app");
import { storeBindingsBehavior } from "mobx-miniprogram-bindings";
import { store } from "../../store/store";
import { getComments } from "../../utils/apis";

Page({
  behaviors: [storeBindingsBehavior],
  storeBindings: {
    store,
    fields: {
      authorization: "authorization",
    },
  },
  /**
   * 页面的初始数据
   */
  data: {
    showSearch: false,
    showPop: false,
    commentsPage: 1,
    reviewList: [],
    requestPage: {
      key: "",
      page: 1,
      size: 10,
      sortBy: "",
      status: true,
      typeId: 5,
    },
  },

  /**
   * 从后端获取点评内容
   */
  getReview: function () {
    getComments(this.data.requestPage.page, this.data.requestPage.size).then(
      (res) => {
        var newReview = res.data.data;
        if (res.data.data.length > 0) {
          this.newPage();
        }
        newReview = this.addNewData(newReview);
        console.log("获取review:" + newReview);
        this.setData({
          reviewList: newReview,
        });
      }
    );
  },
  /**
   * 向原数组中添加新数据，如果有数据id重合，则替换掉旧数据
   */
  addNewData: function (newData) {
    // 创建一个新的数组来存储替换后的数据
    const updatedReviewList = this.data.reviewList.map((oldItem) => {
      // 在新数据中查找与当前旧数据项相匹配的项
      const matchingNewItem = newData.find(
        (newItem) => newItem.id === oldItem.id
      );
      // 如果找到了匹配的项，则返回新数据项；否则返回旧数据项
      return matchingNewItem ? matchingNewItem : oldItem;
    });
    // 在新数据中过滤出没有匹配到的项
    const nonMatchingNewData = newData.filter(
      (newItem) => !updatedReviewList.some((item) => item.id === newItem.id)
    );
    // 将没有匹配到的新数据添加到替换后的数据列表的末尾
    updatedReviewList.push(...nonMatchingNewData);
    return updatedReviewList;
  },
  /**
   * 查询页+1
   */
  newPage: function () {
    const newPage = this.data.requestPage.page + 1;
    this.setData({
      "requestPage.page": newPage,
    });
  },
  /**
   * 弹出层展示
   */
  showPopup(event) {
    const review = event.detail
    console.log(event.detail)
    this.setData({
      writeReview: review,
      showPop: true,
      showSearch: false,
    });
  },
  /**
   * 弹出层关闭
   */
  onClose() {
    this.setData({ showPop: false });
    this.setData({
      showSearch: true
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getReview();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      reviewList: [],
      "requestPage.page": 1,
    });
    this.getReview();
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    this.getReview();
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
});
